package br.sgd.controller;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import br.sgd.model.beans.Usuario;
import br.sgd.model.bo.UsuarioBo;

public class UsuarioController {
	
	private Usuario usuario;
	private List<Usuario> usuarios;
	
	public UsuarioController() {
		super();
	}


	public String incluir(){
		this.usuario = new Usuario();
		return "incluirUsuario";
	}
	
	public String listar() {
		UsuarioBo usuarioBo = new UsuarioBo();
		this.usuarios = usuarioBo.listarTodos();
		this.usuario = new Usuario();
		return "listarUsuario";
	}

	public String salvar(){
		FacesContext context = FacesContext.getCurrentInstance();
		UsuarioBo usuarioBo = new UsuarioBo();

		usuarioBo.salvar(usuario);
		this.usuarios = usuarioBo.listarTodos();
		this.usuario = new Usuario();
		
		FacesMessage msg = new FacesMessage("Usuário incluido com sucesso!");
		msg.setSeverity(FacesMessage.SEVERITY_INFO);
		context.addMessage(null, msg);
		return "listarUsuario";
		
	}
	

	public void filtrar(ActionEvent event){
		UsuarioBo usuarioBo = new UsuarioBo();
		this.usuarios = usuarioBo.filtrar(usuario);
	}

	public String excluir(){
		UsuarioBo usuarioBo = new UsuarioBo();
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			usuarioBo.excluir(this.usuario);
			this.usuarios = usuarioBo.listarTodos();
			FacesMessage msg = new FacesMessage("Usuário excluído com sucesso!");
			msg.setSeverity(FacesMessage.SEVERITY_INFO);
			context.addMessage(null, msg);
		} catch (Exception e) {
			e.printStackTrace();
			FacesMessage msg = new FacesMessage("Erro inesperado ao excluir usuário!");
			msg.setSeverity(FacesMessage.SEVERITY_ERROR);
			context.addMessage(null, msg);
		} 
		return null;
	}
	
	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}


	public List<Usuario> getUsuarios() {
		return usuarios;
	}


	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
	
	

}
